﻿/*----------------------------------------------------------------
//  <copyright file="EntityRoleInputDtoBase.cs" company="MicroCloud@151504200868">
//      Copyright © 2020-2024 MicroCloud Corporation, All rights reserved.
//  </copyright>
//  <site>https://gitee.com/chenmm123/microclouds</site>
//  <last-editor>cmm</last-editor>
//  <last-date>2024-03-04 14:45</last-date>
//----------------------------------------------------------------*/

namespace MicroCloud.Authorization.Dtos
{
    #region "实体角色输入DTO基类"
    /// <summary>
    /// 实体角色输入DTO基类
    /// </summary>
    /// <typeparam name="TRoleKey">角色编号类型</typeparam>
    public abstract class EntityRoleInputDtoBase<TRoleKey> : IInputDto<long>
    {
        #region "属性"
        #region "获取或设置 主键，唯一标识"
        /// <summary>
        /// 获取或设置 主键，唯一标识
        /// </summary>
        [DisplayName("编号")]
        public long Id { get; set; }
        #endregion
        #region "获取或设置 角色编号"
        /// <summary>
        /// 获取或设置 角色编号
        /// </summary>
        [DisplayName("角色编号")]
        public TRoleKey RoleId { get; set; }
        #endregion
        #region "获取或设置 数据编号"
        /// <summary>
        /// 获取或设置 数据编号
        /// </summary>
        [DisplayName("数据编号")]
        public long EntityId { get; set; }
        #endregion
        #region "获取或设置 数据权限操作"
        /// <summary>
        /// 获取或设置 数据权限操作
        /// </summary>
        [DisplayName("数据权限操作")]
        public DataAuthOperation Operation { get; set; }
        #endregion
        #region "获取或设置 过滤条件组"
        /// <summary>
        /// 获取或设置 过滤条件组
        /// </summary>
        [DisplayName("数据筛选条件组")]
        public FilterGroup FilterGroup { get; set; }
        #endregion
        #region "获取或设置 是否锁定"
        /// <summary>
        /// 获取或设置 是否锁定
        /// </summary>
        [DisplayName("是否锁定")]
        public bool IsLocked { get; set; }
        #endregion

        #region "获取或设置 数据版本 IDataVersion 可装载接口，用于乐观并发处理"
        /// <summary>
        /// 获取或设置 数据版本
        /// 在实体提交验证后（增加、修改）会自动设置一个时间戳值持久化至数据库
        /// 修改、移除时取实体数据库值与提交值比对，如不一致则拒绝提交
        /// </summary>
        [DisplayName("数据版本")]
        public long DataVersion { get; set; }
        #endregion

        #endregion

        #region "构造函数"
        #region "初始化一个实体角色输入DTO基类的新实例"
        /// <summary>
        /// 初始化一个实体角色输入DTO基类 <see cref="EntityRoleInputDtoBase{TRoleKey}"/> 的新实例
        /// </summary>
        protected EntityRoleInputDtoBase()
        {
            FilterGroup = new FilterGroup();
        }
        #endregion

        #endregion

    }
    #endregion

}
